﻿using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class Arr数组操作 : System.Web.UI.Page
{
    TongUse1 TextData = new TongUse1();
    /// <summary>
    /// DataTable對象
    /// </summary>
    DataTable MyDt = new DataTable();
    /// <summary>
    /// DataRow對象
    /// </summary>
    DataRow MyDr;
    protected void Page_Load(object sender, EventArgs e)
    {



        Response.Write("sasasa +  " );
        //TowArray();
       // ArrAyListArr();
        DataTableArray();












        //
        // TODO: 在此处添加代码以启动应用程序
        //

        //声明一维数组，没有初始化，等于null
        int[] intArray1;
        //初始化已声明的一维数组
        intArray1 = new int[3];
        intArray1 = new int[3] { 1, 2, 3 };
        intArray1 = new int[] { 1, 2, 3 };


        //声明一维数组，同时初始化
        int[] intArray2 = new int[3] { 1, 2, 3 };
        int[] intArray3 = new int[] { 4, 3, 2, 1 };
        int[] intArray4 = { 1, 2, 3, 4 };
        string[] strArray1 = new string[] { "One", "Two", "Three" };
        string[] strArray2 = { "This", "is", "an", "string", "Array" };


        //通过数组索引（下标），对元素访问
        if (intArray1[2] > intArray2[0])
        {
            //把一维数组作为方法中的参数
            Write_1DArray(intArray1);
            Write_1DArray(strArray2);
        }
        //直接创建一维数组，作为方法参数
        Write_1DArray(new int[] { 2, 3, 4, 5 });
        Write_1DArray(new String[] { "Hello", "My", "Friends" });

        //声明二维数组，没有初始化
        short[,] sArray1;
        //初始化已声明的二维数组
        sArray1 = new short[2, 2];
        sArray1 = new short[2, 2] { { 1, 1 }, { 2, 2 } };
        sArray1 = new short[,] { { 1, 2, 3 }, { 4, 5, 6 } };

        //声明二维数组，同时初始化
        short[,] sArray2 = new short[1, 1] { { 100 } };
        short[,] sArray3 = new short[,] { { 1, 2 }, { 3, 4 }, { 5, 6 } };
        short[,] sArray4 = { { 1, 1, 1 }, { 2, 2, 2 } };
        //声明三维数组，同时初始化
        byte[, ,] bArray1 = { { { 1, 2 }, { 3, 4 } }, { { 5, 6 }, { 7, 8 } } };

        //把二维数组作为方法的参数
        Write_2DArray(sArray1);
        //直接创建二维数组，作为方法参数
        Write_2DArray(new short[,] { { 1, 1, 1 }, { 2, 2, 2 } });

        //声明交错数组，没有初始化
        int[][] JagIntArray1;
        //初始化已声明的交错数组
        JagIntArray1 = new int[2][] {
           new int[]{1,2},
           new int[]{3,4,5,6}
          };
        JagIntArray1 = new int[][]{
             new int[]{1,2},
             new int []{3,4,5},
             intArray2 //使用int[]数组变量
            };
        //声明交错数组，同时初始化
        int[][] JagIntArray2 = {
            new int[]{1,1,1},
            new int []{2,2},
            intArray1
                      };
        //把交错数组作为方法参数
        Write_JagArray(JagIntArray1);

    }

    /// <summary>
    /// 用dataTable來處理資料
    /// </summary>
    public void DataTableArray() //OK 搞定的數組
    {
        MyDr = MyDt.NewRow();//定义一个新行   

        string[] cont = "/game/Upfile/img/2007625225757.jpgえ窝窝2え73え84え95え10".Split('え');//一個一維數組
        MyDt.Columns.Add("Pic");//添加一個新行 DataRow Pic
        MyDt.Columns.Add("cont");//內容;
        
        MyDr[0] = cont[0];//pic
        MyDr[1] = cont[1].Split('')[0];//cont

        ///DataTable content

        MyDt.Rows.Add(MyDr);//一定要定義要不然他說這個表有這個行噠

        MyDr = MyDt.NewRow();//定义一个新行   
        MyDr[0] = cont[1].Split('')[1];
        MyDr[1] = cont[2].Split('')[0];


        MyDt.Rows.Add(MyDr);//一定要定義要不然他說這個表有這個行噠

        MyDr = MyDt.NewRow();//定义一个新行   
        MyDr[0] = cont[2].Split('')[1];
        MyDr[1] = cont[3].Split('')[0];


        MyDt.Rows.Add(MyDr);//一定要定義要不然他說這個表有這個行噠

        MyDr = MyDt.NewRow();//定义一个新行   
        MyDr[0] = cont[3].Split('')[1];
        MyDr[1] = cont[4].Split('')[0];


        MyDt.Rows.Add(MyDr);//一定要定義要不然他說這個表有這個行噠

        MyDr = MyDt.NewRow();//定义一个新行   
        MyDr[0] = cont[4].Split('')[1];
        MyDr[1] = cont[5].Split('')[0];

        MyDt.Rows.Add(MyDr);
        GridView1.DataSource = MyDt.DefaultView;
        GridView1.DataBind();
    }


    /// <summary>
    /// 使用 arrAylist 搞个类似的 2维数组 //这个方法不行
    /// </summary>
    public void ArrAyListArr()
    {
        ArrayList MyArr = new ArrayList();
        ArrayList MyArr_M = new ArrayList();
        MyArr.Add("aa");
        MyArr.Add("bb");
        MyArr_M.Add(MyArr);
        MyArr.Add("cc");
        MyArr.Add("dd");
        MyArr_M.Add(MyArr);
        MyArr.Add("ee");
        MyArr.Add("ff");
        MyArr_M.Add(MyArr);
        MyArr.Add("gg");
        MyArr.Add("hh");
        MyArr_M.Add(MyArr);
        // GridView1.DataSource = MyArr_M;
        //  GridView1.DataBind();
        
    }


    /*
     * 
     * 试试C#中的ArrayList类型吧，这种类型和java中的vector差不多，非常方便灵活   
  ArrayList   al1   =   new   ArrayList();   
    
          ArrayList   rm2   =   new   ArrayList();   
          rm2.Add((string)"hello1");   
          rm2.Add((string)"hello2");   
          rm2.Add((string)"hello3");   
            
  rm1.Add((ArrayList)rm2);   
    
  就生成一个类似二维数组的列表   
  用   (ArrayList)rm1[0]   可以取出rm2   
  (String)rm2[0]   可以取出"hello1"   
    
  唉呀，就是这个意思。   
    .Add(Object   obj)   方法可以加入一个元素   
    .RemoveAt(int   i)   方法可以删除指定元素   
    .Insert(int   index,   Object   obj)   方法可以插入一个元素   
  这个取值也是很simple的   
  ArrayList有个属性.size()   
  告诉你这个列表中有多少个元素   
  用for   (int   i=0;i<al.Count;i++)   
  {   
        String   ss   =   al[i];   
  }   
  就可以取出所有元素了！   

     * 
     * 
     * 
     datatable本身就是一个类似于二维数组的   
  dtStr[][]=new   string   [datatable.rows.count][10](列数根据你的数据库情况自己设置，这里我是随便假设的)   
    
  for(int   i=0;i<datatable.rows.count;i++)   
  {   
          for(int   j=0;j<10;j++)   
          {   
                  dtStr[i][j]   =     datatable.row[i][j].ToString();   
          }   
  }   
     */
    /// <summary>
    /// 一个像表格的二维数组
    /// </summary>
    protected void TowArray()
    {
        string[,] StrArr;//声明一个二维数组
        StrArr = new string[4, 4] { { "1", "a", "b", "c" }, { "3", "d", "e", "f" }, { "5", "g", "h", "i" }, { "5", "j", "j", "L" } };//初始化一个四行4列的二维数组
        Response.Write(StrArr[3,3]);
    }




    private static void Write_1DArray(int[] ArrayName)
    {
        //一维数组的Length属性就是元素个数
        for (int i = 0; i < ArrayName.Length; i++)
        { //通过数组名[索引]访问数组元素
            Console.Write(ArrayName[i] + " ");
        }
        Console.WriteLine();
    }
    private static void Write_1DArray(string[] ArrayName)
    { //一维数组的Length属性就是元素个数
        for (int i = 0; i < ArrayName.Length; i++)
        { //通过"数组名[索引]"访问数据元素
            Console.Write(ArrayName[i] + " ");
        }
        Console.WriteLine();
    }
    private static void Write_2DArray(short[,] ArrayName)
    { //多维数组使用GetLength方法得到每一维的长度
        for (int i = 0; i < ArrayName.Length; i++)
        {
            Console.Write("二维数组第{0}行：", i + 1);
            for (int j = 0; j < ArrayName.GetLength(1); j++)
            { //多维数组通过"数组名[索引,索引..]"访问数据元素
                //Console.Write (ArrayName[i,j]+" ");
            }
            Console.WriteLine();
        }
    }
    private static void Write_JagArray(int[][] ArrayName)
    { //交错数组的Length属性是包含子数组的个数
        for (int i = 0; i < ArrayName.Length; i++)
        {
            Console.Write("交错数组第{0}个子数组：", i + 1);
            //二维交错数组的子数组是一维数组，使用Length属性得到元素数
            for (int j = 0; j < ArrayName[i].Length; j++)
            { //交错数组通过"数组名[索引][索引]"访问数据元素
                Console.Write(ArrayName[i][j] + " ");
            }
            Console.WriteLine();
        }
    }

}




